package com.first.util;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.ArrayList;
import java.util.UUID;

public class Onload  {
    // Endpoint以北京为例，其它Region请按实际情况填写。
    private static String endpoint = "oss-cn-beijing.aliyuncs.com";
    // 阿里云主账号AccessKey拥有所有API的访问权限，风险很高。
    private static String accessKeyId = "LTAI4GJ218cnzh7XGhKuk7WJ";
    private static String accessKeySecret = "xLoNdWZpWMEk2VXhapNs6CCvGgXhVN";
    private static String bucketName = "mdfk";


    public static String getURL(MultipartFile file){
        // 获得当前上传文件的后缀名
        String filename = file.getOriginalFilename();
        // 获得文件的类型名称
        String s = filename.substring(filename.indexOf("."));
        // 生成唯一id
        filename= UUID.randomUUID().toString()+s;
        // <yourObjectName>上传文件到OSS时需要指定包含文件后缀在内的完整路径，例如abc/efg/123.jpg。
        String objectName = filename;
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        // 上传文件到指定的存储空间（bucketName）并将其保存为指定的文件名称（objectName）。
        try {
            /* file.getInputStream() 获取要上传的文件的字节流*/
            ossClient.putObject(bucketName, objectName,file.getInputStream());
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 关闭OSSClient。
        ossClient.shutdown();
        String url = "https://mdfk.oss-cn-beijing.aliyuncs.com/"+filename;
        return url;
    }

    public static ArrayList<String> getURLS(MultipartFile[] files){
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        ArrayList<String> urls = new ArrayList<>();
        for (MultipartFile file:files){
            String filename = file.getOriginalFilename();
            String s = filename.substring(filename.indexOf("."));
            filename= UUID.randomUUID().toString()+s;
            String objectName = filename;
            try {
                /* file.getInputStream() 获取要上传的文件的字节流*/
                ossClient.putObject(bucketName, objectName,file.getInputStream());
            } catch (IOException e) {
                e.printStackTrace();
            }
           urls.add("https://mdfk.oss-cn-beijing.aliyuncs.com/"+filename);
            System.out.println(urls.get(0));
        }
        ossClient.shutdown();
        return urls;
    }
    /**
     * 删除文件的方法
     * @param fileName;
     * @return String
     * 删除成功/文件不存在
     */
    public static String deleteFile(String fileName){
        //文件名和后缀
        String objectName = fileName;
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        // 判断文件是否存在。doesObjectExist还有一个参数isOnlyInOSS，如果为true则忽略302重定向或镜像；如果为false，则考虑302重定向或镜像。
        boolean found = ossClient.doesObjectExist(bucketName, objectName);
        String delete ="";
        if (found){
            // 删除文件。如需删除文件夹，请将ObjectName设置为对应的文件夹名称。如果文件夹非空，则需要将文件夹下的所有object删除后才能删除该文件夹。
            ossClient.deleteObject(bucketName, objectName);
            delete="删除成功";
        }
        // 关闭OSSClient。
        ossClient.shutdown();
        return delete;
    }
}
